Data Input
 In GLE input of data is limited to numerical value and the '*' symbol
 which denotes a missing value. GLE98 uses its line parsing procedure
 to read in data sets, which makes it possible to provide enhanced
 data input facilities. As a result an input data file may include 
 features of a simple spread-sheet.

 As well as numerical input mathematical functions and expressions 
 are permissible as input. These may include the GLE98 variables 
(a to z, a0 ..a9, b0 .. b9, etc.) Variables d0 .. h9, p0 .. t9 are
 assigned to the column values of the current data line as it is 
 read in. Hence the expressions may be functions of preceeding values 
 on the line (and also values from the preceeding line which have 
 not yet been overwritten - although this feature should be used with 
 care!). For example, in the first data set read in the first column
 (normally used as the x co-ordinate) will be assigned to d0 at the 
 start of each new line. A subsequent column could then be assigned to 
 cos(d0) which would yield a plot of cos(x). However, note that this 
 assignment of variable names is limited to the current data set being
 read in. If for example, a set of 10 (i.e. columns 0 to 9) data columns 
 has already been  entered and we now add a second set of 10 columns 
 from a second  data set these will be added to the first set as 
 columns 10 to 19, but during entry of this second set variable name 
 d0 will now refer to column 10, not the original x value in column 0.
 The implication is that if we need to form functions of x in this 
 second entry we will have to enter a second column of the x values
 as part of this second set. A method of avoiding this difficulty 
 is descibed below.

 Special Operators. 
 During data input the following operators are recognised in place 
 of numerical values:

   *  The missing entry symbol as used in GLE.
      this is skipped during plotting. i.e. The plot line is drawn 
      from the preceeding point to the following point.      Ord(42)
   +  The input value is that of the same column of the previous
      line incremented by 1.0                                Ord(43)
   -  The input value is that of the same column of the previous
      line decremented by 1.0                                Ord(45)
   /  Not yet used                                           Ord(47)
   <  The input value  is that of the first column of the previously 
      entered data (i.e. the primary x value.)               Ord(60)
   >  The input value is that of the last column of the previously 
      entered data.                                          Ord(62)
   ^  The input value is the same as that in the same column of
      the previous line.                                     Ord(94)
   _  The stop/start-plot symbol. The first time this is encountered 
      plotting ceases at this point and is only restarted if a second 
      '_' is encountered before the end of the column.       Ord(95)
   |  The input value is that of the corresponding column in the 
      previously entered data set.                           Ord(124)

  These '<','>' and '|' operators offer short cut facilities for 
  accessing earlier inputs. 

  Data Set Formats
  Comment lines (lines with ! in the first column may be entered freely.
  At present continuation lines are not supported.
  A data set should be terminated by a comment line ( e.g. '! End' )
  At present a single data set is limited to a maximum of 50 columns, 
  so to enter the full 100 columns of data at leat two data sets are 
  required. 
  Data sets are currently limited to 250 rows, excluding any comment 
  lines.

  Details of data entry.
  The keyword 'data' is processed in procedure DoLine in unit EGLE95.
  This then calls a procedue InputData in Unit Graph, which in turn
  uses the procedures SetLine and  Analyse in Unit GLETools to process 
  a line of text from the data file. This line is processed in the same 
  manner as other inputs. Each character string separated by a space or 
  ';' is checked and identified as a number, variable name, expression, 
  etc. If possible the corresponding numerical value is evaluated.
  The results of these processes are then held in the three arrays, 
  StringType, StringIndex and StringValue. On return to procedure 
  InputData these arrays are examined and the appropriate values 
  are entered in the master data array data[row][column] which is
  used by the plotting routines. This is actually an array of two
  element records, the first element being a status character which
  is used to identify and handle missing entries ('*' & '_') in the 
  input  data columns ( and could in future also be used to handle 
  other special situations.) Note that a flag 'SetData' is used to 
  modify operations within procedure Analyse during data input.

  Data Plotting
  During set up of a graph various commands are given to control the
  form of the plots. For example, the command:
      d03 line lstyle 2 lcolor red
  specifies that dataset 3 is to be plotted as a red dashed line.
  During data entry these commands are enterd in an array of  records
  PlotData[i], one for each data set. At the completion of input these 
  records then contain all the information needed to produce plots 
  from each data set. The actual plotting is caried out by the 
  procedure ConstructGraph, which is called when the command 
  'End Graph' is encountered, The columns used for the data set are 
  first scanned to identify the x-range of the plot. This portion of 
  the columns is the processed. Any missing y entry denoted by a '*' 
  is skipped and any '_' stops plotting until a second '_' is 
  encountered.
   
  